home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Purity
/
Purity #22 (1994-01-19)(Diesel)(DE)[WB].zip
/
Purity #22 (1994-01-19)(Diesel)(DE)[WB].adf
/
APrint_V1.1
/
APrint_V1.1.p
< prev
next >
Wrap
Text File
|
1994-01-17
|
55KB
|
1,721 lines
PROGRAM APrint; {V1.1}
{------------------------------------------------------------------------}
{ *** APrint_V1.1 *** USES OS2 KickPascal-Includes
© & P 11/1993 bis 1/1994 by Falk Zühlsdorff (PackMAN)
FREEWARE: wenn nichts an Programm/Source/Anleitung verändert wird ;
folgende Files & der Icons müssen enthalten sein:
APrint_V1.1, APrint.dok
Ideen, Spenden (A4000/Star LS 5ex/IDEK 21"Monitor [grins])an:
PackMAN
c/o Falk Zühlsdorff
Lindenberg 66
98693 Ilmenau/Thür. }
{------------------------------------------------------------------------}
Uses INTUITION,GRAPHICS;
{$INCL 'dos.lib','asl.lib'}
VAR ArpBase: PTR;
Library ArpBase:
-294:Function Filerequest(a0:PTR):Long;
END;
{------------------------------------------------------------------------}
CONST Last:=49; {Begrenzung für Einträge}
Kenn:='APrint_V1.1_Config';
dk:='APrint_V1.1_Data';
{------------------------------------------------------------------------}
TYPE Gadfeld1=array[0..19] of gadget;
Stringfeld1=array[0..9] of string[12]; {für Booleangadgets}
ituifeld=array[0..19] of Intuitext;
{****************}
SGadfeld=array[0..6] of gadget;
Stringfeld2=array[0..6] of string[52]; {für Stringgadgets}
SGifeld=array[0..6] of StringInfo;
{****************}
ipffeld=array[0..9] of long; {Für Images(Gads)}
iradiofeld=array[1..18] of long;
{****************}
rec=RECORD
name1,name2,Nr,Ort:STRING[31];
Kz:STRING[12];
END;
{****************}
zhfeld=array[5..7] of integer; {Farben}
Stringtyp=string[100];
{------------------------------------------------------------------------}
VAR Scr : ^Screen;
Vp : ViewPort;
Win : ^Window;
OWin: ^Window;
RP : ^RastPort; {Screen-/Window-/Msg-/}
Prc : ^Process; {Hilfsvariablen}
PrcH: Ptr;
Msg : ^IntuiMessage;
i:byte;
ex,strw,NLQu,
ergebnis,frei,tosave,
toload:boolean;STATIC;
Akt:^Gadget;
leerZh:integer;STATIC;
gfx:long;STATIC;
{****************}
G:Gadfeld1;STATIC; {normale Booleangadgets}
S2:Stringfeld1;STATIC;
Gt:ituifeld;STATIC;
{****************}
SG:SGadfeld;STATIC;
SGt:Stringfeld2;STATIC; {Stringgadets}
SGi:SGifeld;STATIC;
{****************}
ipfeil:^ipffeld;STATIC;
ipf,radio1,radio2:image;STATIC; {Images für Gadgets}
iradio1,iradio2:^iradiofeld;STATIC;
{****************}
ein:array[0..Last] of rec;STATIC; {Datenverwaltung}
line,ig,cg,help:byte;STATIC;
autoh,autofirst,asl,arp,fehl,
neues:boolean;STATIC;
lab1,lab2:string;STATIC;
filelib:text;STATIC;
Datei,Pfad,rufname:Stringtyp; STATIC;
{****************}
ah,bh,ch,dh:zhfeld;STATIC; {Farben}
{--------------------------------------------------------------------------}
PROCEDURE loadcon;
VAR load:text;STATIC;
s:string;STATIC;
p:integer;STATIC;
BEGIN
fehl:=false;
p:=0;
reset(load,'SYS:S/AprintV1.1.config');
if IOResult=0 then
BEGIN
readln(load,s);
if s=Kenn then
BEGIN
for i:=5 to 7 do
BEGIN readln(load,s); VAL (s,ah[i],p);
if p<>0 then BEGIN fehl:=true; exit; END;END;
for i:=5 to 7 do
BEGIN readln(load,s); VAL (s,bh[i],p);
if p<>0 then BEGIN fehl:=true; exit; END;END;
for i:=5 to 7 do
BEGIN readln(load,s); VAL (s,ch[i],p);
if p<>0 then BEGIN fehl:=true; exit; END;END;
for i:=5 to 7 do
BEGIN readln(load,s); VAL (s,dh[i],p);
if p<>0 then BEGIN fehl:=true; exit; END;END;
readln(load,s); if s='1' then NLQu:=true
else if s='0' then NLQu:=false
else BEGIN fehl:=true; exit;END;
readln(load,s); if s='1' then autoh:=true
else if s='0' then autoh:=false
else BEGIN fehl:=true; exit;END;
readln(load,s); if autoh then rufname:=s else rufname:='';
readln(load,s); pfad:=s;
readln(load,s); datei:=s;
readln(load,s); VAL (s,leerZh,p); if p<>0 then fehl:=true;
close(load);
END
else BEGIN fehl:=true;close(load); END
END
else fehl:=true;
END;
{------------------------------------------------------------------------}
PROCEDURE Radio;
BEGIN
iradio1:=PTR(ALLOC_MEM(SizeOf(iradiofeld),2));
iradio1^:=iradiofeld(%00000000000000100000000000000000,
%00000000000000110000000000000000,
%00000000000000011000000000000000,
%00000000000000011000000000000000,
%00000000000000011000000000000000,
%00000000000000011000000000000000,
%00000000000000011000000000000000,
%00000000000000110000000000000000,
%00011111111111100000000000000000,
%00111111111111000000000000000000,
%01100000000000000000000000000000,
%11000000000000000000000000000000,
%11000000000000000000000000000000,
{ 2. Bitplane } %11000000000000000000000000000000,
%11000000000000000000000000000000,
%11000000000000000000000000000000,
%01100000000000000000000000000000,
%0010000000000000000000000000000);
iradio2:=PTR(ALLOC_MEM(SizeOf(iradiofeld),2));
iradio2^:=iradiofeld(
%00111111111110000000000000000000,
%01100000000000000000000000000000,
%11000111111100000000000000000000,
%11001111111110000000000000000000,
%11001111111110000000000000000000,
%11001111111110000000000000000000,
%11000111111100000000000000000000,
%01100000000000000000000000000000,
%00100000000000000000000000000000,
%00000000000001000000000000000000,
%00000000000000110000000000000000,
%00000111111100011000000000000000,
%00001111111110011000000000000000,
{ 2. Bitplane } %00001111111110011000000000000000,
%00001111111110011000000000000000,
%00000111111100011000000000000000,
%00000000000000110000000000000000,
%00011111111111100000000000000000);
radio1:=IMAGE(0,0,17,9,2,iradio1,3,0,NIL);
radio2:=IMAGE(0,0,17,9,2,iradio2,3,0,NIL);
END;
{------------------------------------------------------------------------}
PROCEDURE Pfeilimage;
BEGIN
ipfeil:=PTR(ALLOC_MEM(SizeOf(ipffeld),2));
ipfeil^:=ipffeld (%00000000000000000000000000000000,
%00000111111000000000000000000000,
%00001100000110000000000000000000,
%00001100011111100000000000000000,
%00001100001111000000000000000000,
%00001100000110000000000000000000,
%00001100000000000000000000000000,
%00001100000110000000000000000000,
%00000111111100000000000000000000,
%00000000000000000000000000000000);
ipf:=IMAGE(0,0,32,10,1,ipfeil,1,0,NIL);
END;
{------------------------------------------------------------------------}
PROCEDURE SRand (ziel:p_window;x,y,b,h:cardinal);
TYPE type1=array[0..5] of cardinal;
type2=array[0..5] of cardinal;
type3=array[0..5] of cardinal;
type4=array[0..5] of cardinal;
VAR F1:type1;
F2:type2;
F3:type3;
F4:type4;
Bor1,Bor2,Bor3,Bor4:BORDER;
BEGIN
F1:=type1(b-1,0,0,0,0,h); {Gadgetumrandungen}
F2:=type2(b,1,b,h,1,h);
F3:=type3(b-1,1,1,1,1,h-1);
F4:=type4(b-1,1,b-1,h-1,2,h-1);
Bor1:=BORDER(0,0,2,0,0,3,^F1,^Bor2);
Bor2:=BORDER(0,0,1,0,0,3,^F2,^Bor3);
Bor3:=BORDER(0,0,1,0,0,3,^F3,^Bor4);
Bor4:=BORDER(0,0,2,0,0,3,^F4,NIL);
DRAWBORDER(ziel^.RPort,^Bor1,x,y);
END;
{------------------------------------------------------------------------}
PROCEDURE GRand (ziel:p_window;x,y,b,h:cardinal);
TYPE type1=array[0..5] of cardinal;
type2=array[0..5] of cardinal;
type3=array[0..3] of cardinal;
VAR F1:type1;
F2:type2;
F3:type3;
Bor1,Bor2,Bor3:BORDER;
BEGIN
F1:=type1(b-1,0,0,0,0,h); {Gadgetumrandungen}
F2:=type2(b,0,b,h,1,h);
F3:=type3(b-1,1,b-1,h-1);
Bor1:=BORDER(0,0,2,0,0,3,^F1,^Bor2);
Bor2:=BORDER(0,0,1,0,0,3,^F2,^Bor3);
Bor3:=BORDER(0,0,1,0,0,2,^F3,NIL);
DRAWBORDER(ziel^.RPort,^Bor1,x,y);
END;
{------------------------------------------------------------------------}
PROCEDURE message(laber:String);
BEGIN
SGt[6]:=laber;
REFRESHGADGETS(^SG[6],Win,nil);
END;
{------------------------------------------------------------------------}
PROCEDURE Fehlerreq;
VAR fehler:boolean; STATIC;
gadlab1,gadlab2:IntuiText;STATIC;
BEGIN
gadlab1:=INTUITEXT(2,1,0,5,3,NIL,'Klar !!!',NIL);
gadlab2:=INTUITEXT(2,1,0,5,3,NIL,'Was ???',NIL);
fehler:=AUTOREQUEST(NIL,^lab1,^gadlab1,^gadlab2,0,0,330,80);
END;
{------------------------------------------------------------------------}
FUNCTION OS2:BOOLEAN;
VAR lib:p_library;
BEGIN
lib:=intuitionbase;
OS2:=(lib^.lib_version>=36);
END;
{------------------------------------------------------------------------}
PROCEDURE suchelib;
BEGIN
asl:=FALSE;
arp:=FALSE;
if OS2 then
BEGIN
reset(filelib,'sys:libs/asl.library');
IF IORESULT=0 THEN asl:=true
ELSE
BEGIN
reset(filelib,'sys:libs/arp.library');
IF IORESULT=0 THEN arp:=true;
END;
END
else
BEGIN
reset(filelib,'sys:libs/arp.library');
IF IORESULT=0 THEN arp:=true
END;
if asl or arp then close(filelib);
END;
{------------------------------------------------------------------------}
PROCEDURE ASLREQ(titel:STR; VAR Datei,Pfad:Stringtyp);;
VAR Req : p_FileRequester;STATIC;
Tags : ARRAY[0..4] OF TagItem;STATIC;
Cancel : Boolean;STATIC;
titeldata: string;STATIC;
BEGIN
titeldata:=titel;
Tags[0].ti_Tag:=ASL_Hail;
Tags[0].ti_Data:=titeldata;
Tags[1].ti_Tag:=ASL_Window;
Tags[1].ti_Data:=Win^; {Hä hä}
Tags[2].ti_Tag:=ASL_File;
Tags[2].ti_Data:=Datei;
Tags[3].ti_Tag:=ASL_Dir;
Tags[3].ti_Data:=Pfad;
Tags[4].ti_Tag:=TAG_DONE;
{ Requester-Struktur anlegen lassen }
Req:=AllocAslRequest(ASL_FileRequest,^Tags);
rufname:='';
IF Req<>NIL THEN
BEGIN
IF RequestFile(Req) THEN
BEGIN
Datei:=req^.rf_File;
Pfad:=req^.rf_Dir;
IF (Pfad<>'') AND (Pfad[length(Pfad)]<>':') AND
(Pfad[length(Pfad)]<>'/')
THEN Pfad:=Pfad+'/';
rufname:=Pfad+Datei;
END;
FreeAslRequest(Req);
END
ELSE displaybeep(nil);
END;
{------------------------------------------------------------------------}
PROCEDURE filereq(titel:STR; VAR Datei,Pfad:Stringtyp);
TYPE Filerequester=RECORD
FR_Hail : STR;
FR_File : PTR;
FR_Dir : PTR;
FR_Window : p_window;
FR_Funcflags : Byte;
FR_Reserved : Byte;
FR_Function : PTR;
FR_Reseved2 : LONG;
END;
VAR requester: Filerequester;
p_Datei, p_Pfad : PTR;
ok:boolean;
BEGIN
p_Datei:=^Datei;
p_Pfad :=^Pfad;
ok:=true;
rufname:='';
requester:=Filerequester(Titel,p_Datei,p_Pfad,Win,50,0,^ok,1);
IF Filerequest(^requester)<>0 THEN {inkl. Aufruf}
BEGIN
IF Pfad<>"" THEN
IF (pos(":",Pfad)<>Strlen(Pfad)) AND (pfad[(strlen(Pfad))]<>'/')
THEN Pfad:=Pfad+"";
IF (Datei<>"") AND (pfad<>'') AND (pfad[strlen(pfad)]<>':')
THEN rufname:=Pfad+'/'+Datei
ELSE rufname:=pfad+datei;
if ok then ok:=false;
if not ok then exit;
END;
END;
{------------------------------------------------------------------------}
PROCEDURE ToCLI;
VAR CliWin : ^Window;
CliMsg : ^IntuiMessage;
e: boolean;STATIC;
BEGIN
CliWin:=Open_Window(200,0,200,10,$0203,MOUSEBUTTONS+_CLOSEWINDOW,ACTIVATE+
WINDOWDRAG+ WINDOWDEPTH+RMBTRAP+WINDOWCLOSE,'--> APrint <--',Nil,200,10,
200,10);
if CliWin=Nil then
exit;
ScreenToBack(Scr);
ex:=false;
REPEAT
CliMsg:=Wait_Port(CliWin^.UserPort);
CliMsg:=Get_Msg(CliWin^.UserPort);
case CliMsg^.Class of
MOUSEBUTTONS : if (CliMsg^.Code and $80)=0 then
if (CliMsg^.Code and 1)=1 then
e:=true;
_CLOSEWINDOW : BEGIN e:=true; ex:=true; END;
else; end;
Reply_Msg(CliMsg);
UNTIL e;
Close_Window(CliWin);
if not ex then ScreenToFront(Scr);
END;
{------------------------------------------------------------------------}
PROCEDURE Loeschen;
BEGIN
frei:=true;
if SGt[0]<>'' then
BEGIN SGt[0]:=''; frei:=false END;
if SGt[1]<>'' then
BEGIN SGt[1]:=''; frei:=false END;
if SGt[2]<>'' then
BEGIN SGt[2]:=''; frei:=false END;
if SGt[3]<>'' then
BEGIN SGt[3]:=''; frei:=false END;
if SGt[4]<>'' then
BEGIN SGt[4]:=''; frei:=false END;
if not frei
then BEGIN REFRESHGADGETS(^SG[0],Win,nil);
if (not toload) and (not neues)
then message('Eintrag gelöscht.'); END
else if (not toload) and (not neues)
then
message('Wozu Löschen, der Eintrag ist doch frei ?!?');
END;
{----------------------------------------------------------------------}
PROCEDURE Wechseln;
BEGIN
if line<4 then INC(line) else line:=0;
for i:=0 to 9 do
BEGIN
S2[i]:=' '; {nur löschen}
Gt[i]:=IntuiText(1,0,1,11,5,nil,^S2[i],nil);
END;
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
for i:=0 to 9 do
BEGIN
frei:=true;
if (ein[(10*line)+i].name1)<>'' then frei:=false else
if (ein[(10*line)+i].name2)<>'' then frei:=false else
if (ein[(10*line)+i].Nr)<>'' then frei:=false else
if (ein[(10*line)+i].Ort)<>'' then frei:=false else
if (ein[(10*line)+i].Kz)<>'' then frei:=false;
if frei then S2[i]:='frei'
else S2[i]:=ein[(10*line)+i].Kz;
help:=(10-(STRLEN(S2[i])));
Gt[i]:=IntuiText(1,0,1,((4*help)+11),5,nil,^S2[i],nil);
END;
case line of
0: message('Adressen: 1 bis 10');
1: message('Adressen: 11 bis 20');
2: message('Adressen: 21 bis 30');
3: message('Adressen: 31 bis 40');
4: message('Adressen: 41 bis 50');
else; end;
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
delay(10);
END;
{------------------------------------------------------------------------}
PROCEDURE Drucken;
CONST ESC:=CHR(27);
Test:='PRT:';
VAR LST:text;STATIC;
outfile:BPTR;STATIC;
anzahl,abc:long;STATIC;
strg:String[2];STATIC;
raum,raum2:string;STATIC;
BEGIN
frei:=true;
for i:=0 to 3 do if frei then
if SGt[i]<>'' then frei:=false;
if not frei
then
BEGIN
message('Versuche zu drucken / drucke ...');
raum:='';
raum2:='';
if leerZh>0 then for i:=leerZh downto 0 do raum:=(raum+' ');
case leerZh of
1..6: raum2:=raum+' ';
7..11: raum2:=raum+' ';
12..17: raum2:=raum+' ';
17..23: raum2:=raum+' ';
24..28: raum2:=raum+' ';
29..34: raum2:=raum+' ';
35..40: raum2:=raum+' ';
else;end;
strg:=' ';
outfile:=Open(Test,Mode_OLDFILE); {Drucker ansprechen}
if outfile<>0 then
BEGIN
anzahl:=dosWrite(outfile,^strg,3); {Online okay ...}
if anzahl=3 then
BEGIN
abc:=DOSClose(outfile);
rewrite(LST,'PRT:');
if IOResult=0 then
BEGIN
writeln(LST,ESC,'#1');
if NLQu then write(LST,ESC,'[2"z') {NLQ}
else write(LST,ESC,'[1"z'); {Draft}
write(LST,ESC,'[2v',ESC,'[1p',ESC,'[4w',
ESC,'[4m'); {hoch/unterstr.}
writeln(LST,raum,raum,SGt[5],ESC,'[1v',ESC,
'[3w',ESC,'[24m'); {normal+nichtunter}
write(LST,ESC,'[0w',ESC,'[1w',ESC,'[1p'); {Pica }
write(LST,ESC,'(B'); {Zeichesatz USA}
write(LST,ESC,'[2z'); {1/8 Zoll}
writeln(LST);
writeln(LST);
for i:=0 to 2 do
BEGIN
writeln(LST,raum2,SGt[i]);
writeln(LST);
END;
write(LST,ESC,'[1m'); {Fettdruck}
writeln(LST,raum2,SGt[3],ESC,'[22m'); {+Fettdr. aus}
message('Ausgedruckt');
close(LST);
END else BEGIN abc:=DosClose(Outfile); message('Printer trouble 1'); END
END else BEGIN abc:=DosClose(Outfile); message('Printer trouble 2'); END
END else BEGIN abc:=DosClose(Outfile); message('Printer trouble 3'); END
END else message('Kein Daten für Ausdruck vorhanden ...');
END;
{------------------------------------------------------------------------}
PROCEDURE PosGadTx(SGadNr:byte,xstr:string);{CenterText für AddyGads 0..9}
VAR l:byte;STATIC;
BEGIN
l:=(10-(STRLEN(xstr)));
S2[SGadNr]:=' '; {nur löschen}
Gt[SGadNr]:=IntuiText(1,0,1,11,5,nil,^S2[SGadNr],nil);
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
S2[SGadNr]:=xstr;
Gt[SGadNr]:=IntuiText(1,0,1,((4*l)+11),5,nil,^S2[SGadNr],nil);
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
END;
{------------------------------------------------------------------------}
PROCEDURE Infoline;
VAR x:boolean;STATIC;
wi:^window;STATIC;
GadiMsg:^IntuiMessage;STATIC;
GADi:Gadget;STATIC;
RPi:^RastPort;STATIC;
BEGIN
wi:=Open_Window(0,10,640,246,1,GADGETUP+GADGETDOWN+RAWKEY,RMBTRAP+BORDERLESS+
ACTIVATE,NIL,Scr,640,246,640,246);
GRand(wi,0,0,638,244);
Gadi:=Gadget(Nil,0,0,640,246,GADGHNONE,RELVERIFY+GADGIMMEDIATE,
BOOLGADGET,NIL,NIL,NIL,0,NIL,1,NIL);
wi^.firstgadget:=^Gadi;
REFRESHGADGETS(wi^.Firstgadget,wi,nil);
RPi:=wi^.RPort;
{++++ Die Laberzeilen ++++}
SetAPen(RPi,3); Move(RPi,247,16);gfx:=_Text(RPi,'*** Copyright ***',17);
SetAPen(RPi,2);Move(RPi,125,32);gfx:=_Text(RPi,
'Erstellt mit KickPascal 2.12 von Maxon Computer.',48);
SetAPen(RPi,1); Move(RPi,35,56);gfx:=_Text(RPi,
'Das Programm dient zum Verwalten und Drucken von bis zu 50 Anschriften.',71);
Move(RPi,35,64);gfx:=_Text(RPi,
'Also für den Heimgebrauch ist es ausreichend und außerdem FREEWARE.,',67);
Move(RPi,35,72);gfx:=_Text(RPi,
'Folgendes muß beachtet werden:',30);
SetAPen(RPi,3);Move(RPi,35,88);gfx:=_Text(RPi,
'Es müssen die Files: APrint_V1.1 / APrint.Dok (incl. Icons) enthalten',69);
Move(RPi,35,96);gfx:=_Text(RPi,
'sein und es dürfen keine Veränderungen vorgenommen werden. Die Auf-',67);
Move(RPi,35,104);gfx:=_Text(RPi,
'nahme in eine PD-Serie ist unbedingt VORHER mit mir abzusprechen.',65);
SetAPen(RPi,2);Move(RPi,35,120);gfx:=_Text(RPi,
'Vertrieb: PD-Händler nicht über 2 DM (Verbote siehe APrint.Dok)',63);
SetAPen(RPi,1);Move(RPi,35,136);gfx:=_Text(RPi,
'Gruß und Dank an: Pascal-Serie PURITY, Diesel, Rogersoft, J.Tröger',66);
Move(RPi,35,144);gfx:=_Text(RPi,
' Janosh (Dreamer), A. Voget',44);
SetAPen(RPi,3);Move(RPi,55,160);gfx:=_Text(RPi,
' Spenden (z.B. A4000/Star LS 5ex/IDEK 21"), Ideen, Bugs an:',63);
Move(RPi,287,176);gfx:=_Text(RPi,'PackMAN',7);
Move(RPi,239,184);gfx:=_Text(RPi,'c/o Falk Zühlsdorff',19);
Move(RPi,263,192);gfx:=_Text(RPi,'Lindenberg 66',13);
Move(RPi,239,200);gfx:=_Text(RPi,'98693 Ilmenau/Thür.',19);
SetAPen(RPi,1);Move(RPi,35,216);gfx:=_Text(RPi,
'Programmhinweis: Will man die Tastenkombinationen (z.B. für ENDE)',65);
Move(RPi,35,224);gfx:=_Text(RPi,
'benutzen, wenn ein Stringgadget aktiviert ist, vorher erst über',63);
Move(RPi,35,232);gfx:=_Text(RPi,
'rechte Alt-/ rechte Amiga-Taste deaktivieren, Have Fun PackMAN...',65);
x:=false;
REPEAT
GADiMsg:=Wait_Port(wi^.UserPort);
GADiMsg:=Get_Msg(wi^.UserPort);
case GADiMsg^.Class of
GADGETUP: x:=true;
RAWKEY:
if GADiMsg^.code in [$45,$12,$44] then x:=true;
else; end; {of case}
Reply_Msg(GADiMsg);
UNTIL x=true;
message('Information gelesen');
Close_Window(wi);
END;
{------------------------------------------------------------------------}
PROCEDURE Setfarbe(Nr,R,G,B:byte);
BEGIN
setRGB4(^Scr^.ViewPort,Nr,R,G,B);
END;
{------------------------------------------------------------------------}
PROCEDURE Prefs;
TYPE Feld=array[1..15] of Gadget;
TxFeld=array[1..3] of IntuiText;
pimagefeld=array[1..3] of image;
Proinfofeld=array[5..7] of Propinfo;
zfeld=array[5..7] of byte;
Vorfeld=array[5..7] of boolean;
VAR x,NLQ,auto:boolean;STATIC;
wp:^window;STATIC;
PMsg:^IntuiMessage;STATIC;
Gp:Feld;STATIC;
Gtp:TxFeld;STATIC;
RPp:^RastPort;STATIC;
pimage: pimagefeld;STATIC;
Gpi:Proinfofeld;STATIC;
a,b,c,d,zahl:zfeld;STATIC;
FarbNr,ProGadID:byte;STATIC;
zeigauf:^Gadget;STATIC;
leerZ,help1,help2:integer;STATIC;
Gpi13:StringInfo;STATIC;
Gpt13:string[4];STATIC;
{*-----------------------------------------------------------------------}
PROCEDURE Farbnrausgabe(x,y:cardinal; laber:Str);
VAR itx:IntuiText;
BEGIN
itx:=IntuiText(3,0,1,x,y,NIL,laber,NIL);
PrintIText(wp^.RPort,^itx,0,0);
END;
{*-----------------------------------------------------------------------}
PROCEDURE PosPRO(z,pos:byte);
VAR zahlstr:string[3];
BEGIN
with Gpi[z] do
BEGIN
zahl[z]:=Round(VertPot/Vertbody);
if zahl[z]<10
then
zahlstr:='0'+IntSTR(zahl[z])
else
zahlstr:=IntSTR(zahl[z]);
Setfarbe(Farbnr,zahl[5],zahl[6],zahl[7]);
case farbnr of
0: a[z]:=zahl[z];
1: b[z]:=zahl[z];
2: c[z]:=zahl[z];
3: d[z]:=zahl[z];
else; END;
Farbnrausgabe(pos,105,zahlstr);
END;
END;
{*------------------------------------------------------------------------}
PROCEDURE Propbalkensetzen;
BEGIN
with Gpi[5] do Vertpot:=zahl[5]*Vertbody ;
with Gpi[6] do Vertpot:=zahl[6]*Vertbody ;
with Gpi[7] do Vertpot:=zahl[7]*Vertbody ;
PosPRO(5,22);
PosPRO(6,55);
PosPRO(7,88);
REFRESHGADGETS(^Gp[5],wp,nil);
REFRESHGADGETS(^Gp[6],wp,nil);
REFRESHGADGETS(^Gp[7],wp,nil);
END;
{*-----------------------------------------------------------------------}
PROCEDURE Inccolor(x,y:byte);
PROCEDURE Propb;
BEGIN
with Gpi[x] do Vertpot:=zahl[x]*Vertbody ;
PosPRO(x,y);
REFRESHGADGETS(^Gp[x],wp,nil);
END;
BEGIN
if zahl[x]<15
then BEGIN
INC(zahl[x]);
Propb;
END
else BEGIN zahl[x]:=0;Propb; END;
END;
{*------------------------------------------------------------------------}
PROCEDURE benutzen;
BEGIN
ah[5]:=a[5];ah[6]:=a[6];ah[7]:=a[7];
bh[5]:=b[5];bh[6]:=b[6];bh[7]:=b[7];
ch[5]:=c[5];ch[6]:=c[6];ch[7]:=c[7];
dh[5]:=d[5];dh[6]:=d[6];dh[7]:=d[7];
NLQu:=NLQ;
autoh:=auto;
leerZh:=leerZ;
END;
{*------------------------------------------------------------------------}
PROCEDURE savecon;
VAR f:text;STATIC;
BEGIN
rewrite(f,'SYS:S/AprintV1.1.config');
if IOResult=0 then
BEGIN writeln(f,Kenn);
for i:=5 to 7 do writeln(f,ah[i]);
for i:=5 to 7 do writeln(f,bh[i]);
for i:=5 to 7 do writeln(f,ch[i]);
for i:=5 to 7 do writeln(f,dh[i]);
if NLQu then writeln(f,'1') else writeln(f,'0');
if autoh then writeln(f,'1') else writeln(f,'0');
writeln(f,rufname); {for autoload}
writeln(f,pfad); {zum merken des Drawers}
writeln(f,datei);
writeln(f,leerZh);
message('Konfiguration gespeichert.');
close(f);
END
else message('Konnte Konfiguration nicht speichern.');
END;
{*------------------------------------------------------------------------}
PROCEDURE back;
BEGIN
Setfarbe(0,ah[5],ah[6],ah[7]);
Setfarbe(1,bh[5],bh[6],bh[7]);
Setfarbe(2,ch[5],ch[6],ch[7]);
Setfarbe(3,dh[5],dh[6],dh[7]);
END;
{*------------------------------------------------------------------------}
PROCEDURE vorw;
BEGIN if leerZ<40 then
BEGIN INC(leerZ); Gpt13:=INTSTR(leerZ);
REFRESHGADGETS(^Gp[13],Wp,nil);
END
else
BEGIN REFRESHGADGETS(^Gp[12],Wp,nil);
message('Es geht eben nicht weiter nach rechts.');
END;
END;
{*------------------------------------------------------------------------}
PROCEDURE rueckw;
BEGIN if leerZ>0 then
BEGIN DEC(leerZ); Gpt13:=INTSTR(leerZ);
REFRESHGADGETS(^Gp[13],Wp,nil);
END
else
BEGIN REFRESHGADGETS(^Gp[12],Wp,nil);
message('Es geht eben nicht weiter nach links.');
END;
END;
{-----------------------------Prefs---------------------------------------}
BEGIN
wp:=Open_Window(100,60,440,146,1,GADGETUP+GADGETDOWN+RAWKEY+MOUSEMOVE,
RMBTRAP+BORDERLESS+ACTIVATE,NIL,Scr,440,146,440,146);
GRand(wp,0,0,438,144);
RPp:=wp^.RPort;
Gtp[1]:=IntuiText(1,0,0,14,5,nil,'Speichern',nil);
Gtp[2]:=IntuiText(1,0,0,18,5,nil,'Benutzen',nil);
Gtp[3]:=IntuiText(1,0,0,22,5,nil,'Abbruch',nil);
for i:=1 to 3 do
BEGIN
Gp[i]:=Gadget(^Gp[1+i],(130*i-90),120,102,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,^Gtp[i],0,NIL,i,NIL);
GRand(Wp,(130*i-90),120,101,16); {Speichern...Abbruch}
END;
Gp[5]:=GADGET(^Gp[6],20,15,20,85,GADGHNONE+GADGIMAGE,GADGIMMEDIATE+
RELVERIFY+FOLLOWMOUSE,PROPGADGET,^pimage[1],NIL,
NIL,0,^Gpi[5],5,NIL);
Gpi[5]:=Propinfo(AUTOKNOB+FREEVERT+PROPBORDERLESS,0,0,0,$ffff div 15,
0,0,0,0,0,0);
Gp[6]:=GADGET(^Gp[7],53,15,20,85,GADGHCOMP+GADGIMAGE,GADGIMMEDIATE+
RELVERIFY+FOLLOWMOUSE,PROPGADGET,^pimage[2],NIL,
NIL,0,^Gpi[6],6,NIL);
Gpi[6]:=Propinfo(AUTOKNOB+FREEVERT+PROPBORDERLESS,0,0,0,$ffff div 15,
0,0,0,0,0,0);
Gp[7]:=GADGET(^Gp[8],86,15,20,85,GADGHCOMP+GADGIMAGE,GADGIMMEDIATE+
RELVERIFY+FOLLOWMOUSE,PROPGADGET,^pimage[3],NIL,
NIL,0,^Gpi[7],7,NIL);
Gpi[7]:=Propinfo(AUTOKNOB+FREEVERT+PROPBORDERLESS,0,0,0,$ffff div 15,
0,0,0,0,0,0);
GRand(wp,19,14,22,86);
GRand(wp,52,14,22,86); {Propgads}
GRand(wp,85,14,22,86);
GRand(Wp, 150,14,40,20);
Gp[8]:=Gadget(^Gp[9],127,56,37,19,GADGHBOX,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,NIL,0,NIL,8,NIL);
GRand(Wp, 125,55,40,20); {0}
SetAPen(RPp,1);
Move(RPp,141,68); gfx:=_Text(RPp,'1',1);
Gp[9]:=Gadget(^Gp[10],127,81,37,19,GADGHBOX,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,NIL,0,NIL,9,NIL);
GRand(Wp, 125,80,40,20);
SetAPen(RPp,1);RectFill(RPp,126,81,163,99);
SetAPen(RPp,0); SetBPen(RPp,1); {1}
Move(RPp,141,93); gfx:=_Text(RPp,'2',1);
Gp[10]:=Gadget(^Gp[11],177,56,37,19,GADGHBOX,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,NIL,0,NIL,10,NIL);
GRand(Wp, 175,55,40,20);
SetAPen(RPp,2);RectFill(RPp,176,56,213,74);
SetAPen(RPp,3);SetBPen(RPp,2); {2}
Move(RPp,191,68); gfx:=_Text(RPp,'3',1);
Gp[11]:=Gadget(^Gp[12],177,81,37,19,GADGHBOX,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,NIL,0,NIL,11,NIL);
GRand(Wp, 175,80,40,20);
SetAPen(RPp,3);RectFill(RPp,176,81,213,99);
SetAPen(RPp,2);SetBPen(RPp,3); {3}
Move(RPp,191,93); gfx:=_Text(RPp,'4',1);
SetBPen(RPp,0);
NLQ:=NLQu;
Gp[4]:=GADGET(^Gp[5],307,20,17,9,GADGHIMAGE+GADGIMAGE,RELVERIFY+TOGGLESELECT,
BOOLGADGET,^radio1,^radio2,NIL,0,NIL,4,NIL); {NLQ}
if NLQ then Gp[4].flags:=(GADGHIMAGE+GADGIMAGE+SELECTED);
auto:=autoh;
Gp[12]:=GADGET(^Gp[13],307,40,17,9,GADGHIMAGE+GADGIMAGE,RELVERIFY+TOGGLESELECT,
BOOLGADGET,^radio1,^radio2,NIL,0,NIL,12,NIL); {AutoLoad}
if auto then Gp[12].flags:=(GADGHIMAGE+GADGIMAGE+SELECTED);
leerZ:=leerZh;
Gpt13:=INTSTR(leerZ);
Gp[13]:=GADGET(^Gp[14],339,90,24,12,GADGHCOMP,RELVERIFY+_LONGINT,
STRGADGET,NIL,NIL,NIL,0,^Gpi13,13,NIL);
Gpi13:=Stringinfo(^Gpt13,nil,0,3,0,0,0,0,0,0,nil,0,nil);
SRand(Wp, 334,86,35,14);
SetAPen(RPp,1);
Move(RPp,54,133); Draw(RPp,62,133); {Speichern}
Move(RPp,228,133); Draw(RPp,236,133); {Benutzen}
Move(RPp,322,133); Draw(RPp,330,133); {Abbruch}
Gp[14]:=Gadget(^Gp[15],301,86,29,15,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,NIL,0,NIL,14,NIL);
GRand(Wp, 301,86,28,14);
SetAPen(RPp,3);
Move(RPp,310,96); gfx:=_Text(RPp,'+',1);
Gp[15]:=Gadget(NIL,375,86,29,15,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,NIL,0,NIL,15,NIL);
GRand(Wp,375,86,28,14);
Move(RPp,385,96); gfx:=_Text(RPp,'-',1);
SetAPen(RPp,3);
Move(RPp,26,10); gfx:=_Text(RPp,'R',1);
Move(RPp,59,10); gfx:=_Text(RPp,'G',1);
Move(RPp,92,10); gfx:=_Text(RPp,'B',1);
Move(RPp,26,12); Draw(RPp,34,12);
Move(RPp,59,12); Draw(RPp,67,12);
Move(RPp,92,12); Draw(RPp,100,12);
Move(RPp,337,29); Draw(RPp,345,29); {NLQ}
Move(RPp,337,27);
gfx:=_Text(RPp,'NLQ',3);
Move(RPp,377,49); Draw(RPp,385,49); {Autoload}
Move(RPp,337,47);
gfx:=_Text(RPp,'AutoLoad',8);
Move(RPp,308,79);
gfx:=_Text(RPp,'Leerzeichen',11);
Move(RPp,308,81); Draw(RPp,316,81);
a[5]:=ah[5];a[6]:=ah[6];a[7]:=ah[7];
b[5]:=bh[5];b[6]:=bh[6];b[7]:=bh[7];
c[5]:=ch[5];c[6]:=ch[6];c[7]:=ch[7];
d[5]:=dh[5];d[6]:=dh[6];d[7]:=dh[7];
zahl[7]:=ah[7];
zahl[5]:=ah[5];
zahl[6]:=ah[6];
FarbNr:=0;
wp^.firstgadget:=^Gp[1];
REFRESHGADGETS(wp^.Firstgadget,wp,nil);
Propbalkensetzen;
x:=false;
REPEAT
PMsg:=Get_Msg(wp^.UserPort);
if PMsg<>nil then
BEGIN
Akt:=PMsg^.IAddress;
Reply_Msg(PMsg);
case PMsg^.Class of
GADGETUP:
case Akt^.GadgetID of
{Sp} 1: BEGIN benutzen; savecon; x:=true;END;
{Be} 2: BEGIN benutzen; x:=true;
message('Benutze Voreinstellungen.');END;
{Ab} 3: BEGIN back;x:=true;message('Prefs abgebrochen.');END;
5: PosPRO(5,22);
6: PosPRO(6,55);
7: PosPRO(7,88);
{NLQ} 4: if (Gp[4].flags and SELECTED)<>0
then
NLQ:=true
else
NLQ:=false;
8: BEGIN
zahl[5]:=a[5];zahl[6]:=a[6];zahl[7]:=a[7];
SetAPen(RPp,0);RectFill(RPp,151,15,188,33);
FarbNr:=0;
Propbalkensetzen;
END;
9: BEGIN
zahl[5]:=b[5];zahl[6]:=b[6];zahl[7]:=b[7];
SetAPen(RPp,1);RectFill(RPp,151,15,188,33);
FarbNr:=1;
Propbalkensetzen;
END;
10: BEGIN
zahl[5]:=c[5];zahl[6]:=c[6];zahl[7]:=c[7];
SetAPen(RPp,2);RectFill(RPp,151,15,188,33);
FarbNr:=2;
Propbalkensetzen;
END;
11: BEGIN
zahl[5]:=d[5];zahl[6]:=d[6];zahl[7]:=d[7];
SetAPen(RPp,3);RectFill(RPp,151,15,188,33);
FarbNr:=3;
Propbalkensetzen;
END;
12: if (Gp[12].flags and SELECTED)<>0
then
auto:=true
else
auto:=false;
13: BEGIN VAL(Gpt13,help1,help2);
if (help2=0) and (help1<41) then leerZ:=help1
else BEGIN Gpt13:=INTSTR(leerZ);
REFRESHGADGETS(^Gp[13],Wp,nil);
message('Sinnlose Einstellung, danke !?!');
END;
END;
14: vorw;
15: rueckw;
else; end;
MOUSEMOVE:
BEGIN
if ProGadID=5 then PosPRO(5,22);
if ProGadID=6 then PosPRO(6,55);
if ProGadID=7 then PosPRO(7,88);
END;
GADGETDOWN:
BEGIN
zeigauf:=PMsg^.IAddress;
ProGadID:=zeigauf^.GadgetID; {nervend für Mousemove}
END;
RAWKEY:
case PMsg^.code of
$01: BEGIN
zahl[5]:=a[5];zahl[6]:=a[6];zahl[7]:=a[7];
SetAPen(RPp,0);RectFill(RPp,151,15,188,33);
FarbNr:=0;
Propbalkensetzen;
END;
$02: BEGIN
zahl[5]:=b[5];zahl[6]:=b[6];zahl[7]:=b[7];
SetAPen(RPp,1);RectFill(RPp,151,15,188,33);
FarbNr:=1;
Propbalkensetzen;
END;
$03: BEGIN
zahl[5]:=c[5];zahl[6]:=c[6];zahl[7]:=c[7];
SetAPen(RPp,2);RectFill(RPp,151,15,188,33);
FarbNr:=2;
Propbalkensetzen;
END;
$04: BEGIN
zahl[5]:=d[5];zahl[6]:=d[6];zahl[7]:=d[7];
SetAPen(RPp,3);RectFill(RPp,151,15,188,33);
FarbNr:=3;
Propbalkensetzen;
END;
$45,$12,$20:BEGIN back; x:=true;
message('Prefs abgebrochen.');END; {Abbruch:ESC/E/A}
$15: BEGIN benutzen; x:=true;
message('Benutze Voreinstellungen.');END; {Benutzen: z}
$18: BEGIN {Autoload: O}
if (Gp[12].flags and SELECTED)=0
then
BEGIN
Gp[12].flags:=(GADGHIMAGE+GADGIMAGE+SELECTED);
auto:=true;
END
else
BEGIN
Gp[12].flags:=(GADGHIMAGE+GADGIMAGE);
auto:=false;
END;
REFRESHGADGETS(^Gp[12],Wp,nil);
END;
$21: BEGIN benutzen; savecon; x:=true;END;{Speichern: S}
$13: Inccolor(5,22); {R}
$24: Inccolor(6,55); {G}
$35: Inccolor(7,88); {B}
$36: BEGIN
if (Gp[4].flags and SELECTED)=0
then
BEGIN
Gp[4].flags:=(GADGHIMAGE+GADGIMAGE+SELECTED);
NLQ:=true;
END {NLQ: N}
else
BEGIN
Gp[4].flags:=(GADGHIMAGE+GADGIMAGE);
NLQ:=false;
END;
REFRESHGADGETS(^Gp[4],Wp,nil);
END;
$1b: vorw; {+}
$3a: rueckw; {-}
$28: BEGIN
strw:=ActivateGadget(^Gp[13],wp,Nil);
VAL(Gpt13,help1,help2);
if (help2=0) and (help1<41) then leerZ:=help1
else BEGIN Gpt13:=INTSTR(leerZ);
REFRESHGADGETS(^Gp[13],Wp,nil);
message('Sinnlose Einstellung, danke !?!');
END;
END;
else;end;
else; end; {of case}
END
else
BEGIN
Msg:=Get_Msg(Win^.UserPort);
if Msg<>nil
then Reply_Msg(Msg);
END;
UNTIL x=true;
Close_Window(wp);
END;
{------------------------------------------------------------------------}
procedure HauptWin;
BEGIN
PFEILIMAGE;
Radio;
Scr:=Open_Screen(0,0,640,256,2,2,1,HIRES+GENLOCK_VIDEO,
'APrint V1.1 © & P by Falk Zühlsdorff 01.01.94 Homeversion');
Vp:=Scr^.ViewPort;
Setfarbe(0,ah[5],ah[6],ah[7]);
Setfarbe(1,bh[5],bh[6],bh[7]);
Setfarbe(2,ch[5],ch[6],ch[7]);
Setfarbe(3,dh[5],dh[6],dh[7]);
Win:=Open_Window(0,10,640,246,1,RAWKEY+GADGETUP,ACTIVATE+
BORDERLESS+RMBTRAP+BACKDROP,Nil,Scr,640,246,640,246);
RP:=Win^.RPort;
PrcH:=FindTask(Nil);
Prc:=PrcH; {Fehlerreq./Task auf eigenen Screen}
OWin:=Prc^.pr_WindowPtr; {umleiten}
Prc^.pr_WindowPtr:=Win;
GRand(Win,0,1,638,244); {Fenster 3D-Rand}
for i:=0 to 4 do
BEGIN
S2[i]:=' frei ';
G[i]:=Gadget(^G[i+1],14,(19*i+9),102,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,^Gt[i],0,NIL,i,NIL);
Gt[i]:=IntuiText(1,0,1,3,5,nil,^S2[i],nil);
GRand(Win,14,(19*i+9),101,16);
END;
for i:=5 to 9 do
BEGIN
S2[i]:=' frei ';
G[i]:=Gadget(^G[i+1],14,(19*i+43),102,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,^Gt[i],0,NIL,i,NIL);
Gt[i]:=IntuiText(1,0,1,3,5,nil,^S2[i],nil);
GRand(Win,14,(19*i+43),101,16);
END;
G[10]:=Gadget(^G[11],45,112,43,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,NIL,0,NIL,10,NIL);
DrawImage(RP,^ipf,57,115);
GRand(Win,45,112,42,16);
SetAPen(RP,1);
Move(RP,130,235);
Draw(RP,130,5);
for i:=0 to 3 do
BEGIN
SGt[i]:='';
SG[i]:=GADGET(^SG[i+1],216,(19*i+14),248,12,GADGHCOMP,RELVERIFY,
STRGADGET,NIL,NIL,NIL,0,^SGi[i],11+i,NIL);
SGi[i]:=Stringinfo(^SGt[i],nil,0,31,0,0,0,0,0,0,nil,0,nil);
SRand(Win,212,(19*i+10),254,14); {name1... PLZ}
END;
SGt[4]:='';
SG[4]:=GADGET(^SG[5],216,90,88,12,GADGHCOMP,RELVERIFY,
STRGADGET,NIL,NIL,NIL,0,^SGi[4],15,NIL);
SGi[4]:=Stringinfo(^SGt[4],nil,0,11,0,0,0,0,0,0,nil,0,nil);
SRand(Win,212,86,96,14); {Kürzel}
Move(RP,135,107);
Draw(RP,635,107);
SGt[5]:='';
SG[5]:=GADGET(^SG[6],216,117,408,12,GADGHCOMP,RELVERIFY,
STRGADGET,NIL,NIL,NIL,0,^SGi[5],16,NIL);
SGi[5]:=Stringinfo(^SGt[5],nil,0,51,0,0,0,0,0,0,nil,0,nil);
SRand(Win,212,113,414,14); {Abs}
Move(RP,135,133);
Draw(RP,635,133);
{##### GfxTx #####}
SetAPen(RP,3);
Move(RP,138,20);
gfx:=_Text(RP,'1.Name:',7);
Move(RP,138,39);
gfx:=_Text(RP,'2.Name:',7);
Move(RP,138,58);
gfx:=_Text(RP,'Straße:',7);
Move(RP,138,77);
gfx:=_Text(RP,'PLZ/Ort:',8);
Move(RP,138,96);
gfx:=_Text(RP,'Kürzel:',7);
Move(RP,138,123);
gfx:=_Text(RP,'Abs.:',5);
Move(RP,138,226);
gfx:=_Text(RP,'Kommentar',9);
{######### Tastenkombies-Kennungen ##########}
SetAPen(RP,3);
Move(RP,162,22); Draw(RP,170,22); {1.Name}
Move(RP,170,41); Draw(RP,178,41); {2.Name}
Move(RP,170,60); Draw(RP,178,60); {Straße}
Move(RP,170,79); Draw(RP,178,79); {PLZ/Ort}
Move(RP,138,98); Draw(RP,146,98); {Kürzel}
Move(RP,146,125); Draw(RP,154,125); {Abs.}
SetAPen(RP,2);
Move(RP,537,52); Draw(RP,545,52); {Sleep/Shell}
SetAPen(RP,3);
Move(RP,320,170); Draw(RP,328,170); {Neu}
Move(RP,421,170); Draw(RP,429,170); {Laden}
Move(RP,531,170); Draw(RP,539,170); {Prefs}
Move(RP,202,170); Draw(RP,210,170); {Loeschen}
Move(RP,205,189); Draw(RP,213,189); {Info}
Move(RP,295,189); Draw(RP,303,189); {Speichern}
Move(RP,413,189); Draw(RP,421,189); {Drucken}
Move(RP,535,189); Draw(RP,543,189); {Ende}
{++++ un veidar gädz +++}
Gt[11]:=IntuiText(3,0,0,34,5,nil,'Info',nil);
Gt[12]:=IntuiText(3,0,0,14,5,nil,'Speichern',nil);
Gt[13]:=IntuiText(3,0,0,22,5,nil,'Drucken',nil);
Gt[14]:=IntuiText(3,0,0,34,5,nil,'Ende',nil);
for i:=0 to 3 do
BEGIN
G[11+i]:=Gadget(^G[12+i],(110*i+171),176,102,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,^Gt[11+i],0,NIL,17+i,NIL);
GRand(Win,(110*i+171),176,101,16); {Info....Ende}
END;
Gt[16]:=IntuiText(3,0,0,23,5,nil,'Löschen',nil);
Gt[17]:=IntuiText(3,0,0,39,5,nil,'Neu',nil);
Gt[18]:=IntuiText(3,0,0,30,5,nil,'Laden',nil);
Gt[19]:=IntuiText(3,0,0,30,5,nil,'Prefs',nil);
for i:=0 to 2 do
BEGIN
G[16+i]:=Gadget(^G[17+i],(110*i+171),157,102,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,^Gt[16+i],0,NIL,23+i,NIL);
GRand(Win,(110*i+171),157,101,16); {Löschen...Prefs}
END;
G[19]:=Gadget(^SG[0],501,157,102,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,^Gt[19],0,NIL,26,NIL);
GRand(Win,501,157,101,16);
Gt[15]:=IntuiText(2,0,0,5,5,nil,'Shell',nil);
G[15]:=Gadget(^G[16],524,39,52,17,GADGHCOMP,RELVERIFY+
GADGIMMEDIATE,BOOLGADGET,NIL,NIL,^Gt[15],0,NIL,21,NIL);
GRand(Win,524,39,51,16); {Shell ???}
SetAPen(RP,1);
Move(RP,135,204);
Draw(RP,635,204);
if not fehl then
SGt[6]:='Willkommen zu APrint, PackMAN'
else SGt[6]:='Konnte Konfiguration nicht laden.';
SG[6]:=GADGET(NIL,216,220,408,12,GADGHCOMP,RELVERIFY+STRINGCENTER,
STRGADGET,NIL,NIL,NIL,0,^SGi[6],22,NIL);
SGi[6]:=Stringinfo(^SGt[6],nil,0,51,0,0,0,0,0,0,nil,0,nil);
SRand(Win,212,216,414,14); {Kommentar}
END;
{--------------------------------------------------------------------}
PROCEDURE UniWin(x,y,rueber1,runter1,rueber2,runter2,ux1,uy1,ux2,uy2:integer;
TxG1,TxG2,Tx1:String;b1:byte);
TYPE TxType=array[0..2] of IntuiText;
VAR UMsg:^IntuiMessage;
WUni:^window;
G1,G2:Gadget;STATIC;
ITx:TxType;
ende:boolean;
RPu:^RASTPORT;
BEGIN
ITx:=TxType
(IntuiText(3,0,1,0,0,nil,^Tx1,nil),
IntuiText(1,0,1,rueber1,runter1,nil,^TxG1,nil),
IntuiText(1,0,1,rueber2,runter1,nil,^TxG2,nil));
WUni:=Open_Window(x,y,185,35,1,GADGETUP+RAWKEY,ACTIVATE+RMBTRAP+BORDERLESS,
NIL,Scr,185,35,185,35);
GRand(WUni,0,0,184,34);
GRand(WUni,6,5,82,16);
G1:=Gadget(^G2,6,5,83,17,GADGHCOMP,RELVERIFY+GADGIMMEDIATE,
BOOLGADGET,NIL,NIL,^ITx[1],0,NIL,1,NIL);
GRand(WUni,96,5,82,16);
G2:=Gadget(Nil,96,5,83,17,GADGHCOMP,RELVERIFY+GADGIMMEDIATE,
BOOLGADGET,NIL,NIL,^ITx[2],0,NIL,2,NIL);
WUni^.FIRSTGADGET:=^G1;
REFRESHGADGETS(WUni^.FIRSTGADGET,WUni,nil);
RPu:=WUni^.RPort;
SetAPen(RPu,1);
Move(RPu,ux1,uy2+8);
Draw(RPu,ux1+8,uy2+8); {lGad}
Move(RPu,ux2+90,uy2+8);
Draw(RPu,ux2+98,uy2+8); {rGad}
PrintIText(WUni^.RPort,^ITx,12,25);
REPEAT
ende:=false;
UMsg:=Wait_Port(WUni^.UserPort);
UMsg:=Get_Msg(WUni^.UserPort);
case UMsg^.Class of
GADGETUP:
BEGIN
AKT:=UMsg^.IAddress;
case AKT^.GADGETID of
1: BEGIN ergebnis:=true; ende:=true; END;
2: BEGIN ergebnis:=false; ende:=true; END;
else; end; {of case inneres}
END;
RAWKEY:
if b1=1 then
BEGIN
case UMsg^.code of
$44,$12: BEGIN ergebnis:=true; ende:=true; END;
$45,$15: BEGIN ergebnis:=false;ende:=true; END;
else; end;
END
else
BEGIN
case UMsg^.code of
$44,$26: BEGIN ergebnis:=true; ende:=true; END;
$45,$36: BEGIN ergebnis:=false;ende:=true; END;
else; end;
END;
else; end; {of case äußeres}
Reply_Msg(UMsg);
UNTIL ende=true;
close_Window(WUni);
END;
{------------------------------------------------------------------------}
PROCEDURE Uebernehmen;
VAR WUe : ^window;
UeMsg : ^IntuiMessage;
G : Gadget;
RPUe : ^RastPort;
ende : boolean;STATIC;
gi,gc : byte;STATIC;
BEGIN
WUe:=Open_Window(130,11,510,245,1,GADGETUP,BORDERLESS+RMBTRAP,Nil,Scr,
510,245,510,245);
GRand(WUe,0,0,508,244);
RPUe:=WUe^.RPort;
G:=Gadget(Nil,0,0,510,246,GADGHNONE,RELVERIFY+GADGIMMEDIATE,
BOOLGADGET,NIL,NIL,NIL,0,NIL,1,NIL);
WUe^.FIRSTGADGET:=^G;
REFRESHGADGETS(WUe^.FIRSTGADGET,WUe,nil);
SetAPen(RPUe,1);
Move(RPUe,30,88);
gfx:=_Text(RPUE,
'<-- Bitte eines der Gadgets anwählen, damit der Eintrag',55);
Move(RPUe,155,104);
gfx:=_Text(RPUE,'Übernommen werden kann.',23);
SetAPen(RPue,3);
Move(RPUe,147,148);
gfx:=_Text(RPUE,'--> Oder hier klicken. <--',26);
ende:=false;
REPEAT
UeMsg:=Get_Msg(WUe^.UserPort);
if UeMsg<>nil
then
BEGIN
Reply_Msg(UeMsg);
case UeMsg^.Class of
GADGETUP: BEGIN ende:=true;
message('--> Eintrag nicht übernommen. <--'); END;
else; end;
END
else
BEGIN
Msg:=Get_Msg(Win^.UserPort);
if Msg<>nil
then
BEGIN
Akt:=Msg^.IAddress;
Reply_Msg(Msg);
gi:=Akt^.GadgetID;
gc:=Msg^.Code-1;
case Msg^.class of
GADGETUP :
case gi of
0..9: BEGIN
PosGadTx(gi,SGt[4]); ende:=true;
ein[(10*line)+gi].name1:=SGt[0];
ein[(10*line)+gi].name2:=SGt[1];
ein[(10*line)+gi].Nr:=SGt[2];
ein[(10*line)+gi].Ort:=SGt[3];
ein[(10*line)+gi].Kz:=SGt[4];
if not tosave then tosave:=true;
END;
10: Wechseln;
else end;
RAWKEY :
case gc of
0..9: BEGIN PosgadTx(gc,SGt[4]); ende:=true;
ein[(10*line)+gc].name1:=SGt[0];
ein[(10*line)+gc].name2:=SGt[1];
ein[(10*line)+gc].Nr:=SGt[2];
ein[(10*line)+gc].Ort:=SGt[3];
ein[(10*line)+gc].Kz:=SGt[4];
if not tosave then tosave:=true;
END;
$10: Wechseln;
else; end;
else;end;
END;
END;
UNTIL ende;
close_Window(WUe);
END;
{----------------------------------------------------------------------}
PROCEDURE Addyout(x:byte);
BEGIN
SGt[0]:=ein[(10*line)+x].name1;
SGt[1]:=ein[(10*line)+x].name2;
SGt[2]:=ein[(10*line)+x].Nr;
SGt[3]:=ein[(10*line)+x].Ort;
SGt[4]:=ein[(10*line)+x].Kz;
REFRESHGADGETS(^SG[0],Win,nil);
END;
{---------------------------------------------------------------------}
PROCEDURE Grundeinstellung;
BEGIN
ah[5]:=11;ah[6]:=11;ah[7]:=11;
bh[5]:=0;bh[6]:=0;bh[7]:=0;
ch[5]:=15;ch[6]:=15;ch[7]:=15;
dh[5]:=6;dh[6]:=7;dh[7]:=13;
line:=0;
leerZh:=0;
NLQu:=true;
autoh:=true;
Pfad:='';
Datei:='';
rufname:='';
END;
{---------------------------------------------------------------------}
PROCEDURE NEU;
BEGIN
Loeschen;
SGt[5]:='';
for i:=0 to 49 do
BEGIN
ein[i].name1:='';
ein[i].name2:='';
ein[i].Nr:='';
ein[i].Ort:='';
ein[i].KZ:='';
END;
line:=0;
if not toload then
BEGIN
for i:=0 to 9 do
BEGIN
S2[i]:=' frei ';
Gt[i]:=IntuiText(1,0,1,3,5,nil,^S2[i],nil);
END;
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
message('Datensätze alle gelöscht (NEU-Modus).');
END;
neues:=false;
tosave:=false;
END;
{---------------------------------------------------------------------}
PROCEDURE SaveListe;
VAR sa:text;STATIC;
BEGIN
if tosave then
BEGIN
if arp then Filereq('Speichern der Adressen: ',Datei,Pfad)
else if asl then AslReq('Speichern der Adressen: ',Datei,Pfad);
if rufname<>''
then
BEGIN
message('Versuche zu speichern...');
rewrite(sa,rufname);
If IOresult=0 then
BEGIN
writeln(sa,dk); {DateiKennung}
writeln(sa,SGt[5]); {Abs}
for i:=0 to 49 do
if (ein[i].name1<>'') or (ein[i].name2<>'') or
(ein[i].NR<>'') or (ein[i].Ort<>'') and
((ein[i].KZ<>'') or (ein[i].KZ<>'frei'))
then
BEGIN
writeln(sa,ein[i].name1);
writeln(sa,ein[i].name2);
writeln(sa,ein[i].Nr);
writeln(sa,ein[i].Ort);
writeln(sa,ein[i].KZ);
END;
close(sa);
message('Adressen gespeichert unter: '+rufname);
END
else message('Konnte File nicht eröffen...');
END;
END
else message('Keine Eintragungen bisher gemacht');
END;
{---------------------------------------------------------------------}
PROCEDURE LadeListe;
VAR lo:text;STATIC;
t:string;STATIC;
z,y:byte;STATIC;
BEGIN
if not autofirst then
if arp then Filereq('Laden der Adressen: ',Datei,Pfad)
else if asl then AslReq('Laden der Adressen: ',Datei,Pfad);
if rufname<>''
then
BEGIN
toload:=true;
if not autofirst then message('Lade...');
z:=0;
reset(lo,rufname);
If IOresult=0 then
BEGIN
readln(lo,t); {DateiKennung ?}
if t=dk then
BEGIN
NEU;
i:=0;
readln(lo,SGt[5]); {Abs}
REPEAT
readln(lo,ein[i].name1);
readln(lo,ein[i].name2);
readln(lo,ein[i].Nr);
readln(lo,ein[i].Ort);
readln(lo,ein[i].KZ);
Inc(z);
Inc(i)
UNTIL eof(lo);
if z<10 then y:=z else y:=10;
for i:=0 to 9 do
BEGIN
S2[i]:=' ';
Gt[i]:=IntuiText(1,0,1,3,5,nil,^S2[i],nil);
END;
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
for i:=0 to y-1 do
BEGIN
S2[i]:=ein[i].Kz;
help:=(10-(STRLEN(S2[i])));
Gt[i]:=IntuiText(1,0,1,((4*help)+11),5,nil,^S2[i],nil);
END;
if z<10 then
for i:=z to 9 do
BEGIN
S2[i]:=' frei ';
Gt[i]:=IntuiText(1,0,1,3,5,nil,^S2[i],nil);
END;
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
message('Geladen: '+rufname);
tosave:=true;
END
else message('Keine APrintV1.1 Datei');
close(lo);
END
else message('Konnte Datei nicht öffnen');
END;
toload:=false;
END;
{******************************** Main *******************************}
BEGIN
suchelib;
if arp then openlib(arpbase,'arp.library',0)
else if asl then OpenLib(AslBase,ASLNAME,36)
else
BEGIN
lab1:=INTUITEXT(2,1,0,40,15,NIL,' APrint V1.1 benötigt die',^lab2);
lab2:=INTUITEXT(2,1,0,40,25,NIL,'ARP (OS1.3) oder ASL.LIBRARY',NIL);
fehlerreq;
exit;
END;
if (arpbase=NIL) or (ASLBASE=NIL) then
BEGIN
lab1:=INTUITEXT(2,1,0,40,15,NIL,' Fehler beim öffnen von',^lab2);
lab2:=INTUITEXT(2,1,0,40,25,NIL,'ARP (OS1.3) oder ASL.LIBRARY',NIL);
fehlerreq;
exit;
END;
line:=0;
tosave:=false;
loadcon;
if fehl then Grundeinstellung;
Hauptwin;
Win^.Firstgadget:=^G[0];
REFRESHGADGETS(Win^.Firstgadget,Win,nil);
if (autoh) and (rufname<>'') then
BEGIN autofirst:=true;
message('AutoLoad-Modus. Bitte warten lade: '+rufname);
LadeListe
END;
autofirst:=false;
ex:=false;
REPEAT
Msg:=Get_Msg(Win^.UserPort);
if Msg<>nil
then
BEGIN
Akt:=Msg^.IAddress;
ig:=Akt^.GadgetID;
cg:=Msg^.Code;
Reply_Msg(Msg);
case Msg^.class of
GADGETUP :
case ig of
0..9: Addyout(ig);
{@} 10: Wechseln;
{name1} 11: strw:=ActivateGadget(^SG[1],Win,Nil);
{name2} 12: strw:=ActivateGadget(^SG[2],Win,Nil);
{straße} 13: strw:=ActivateGadget(^SG[3],Win,Nil);
{ort} 14: strw:=ActivateGadget(^SG[4],Win,Nil);
{Kürzel} 15: BEGIN
frei:=true;
for i:=0 to 4 do if frei then
if SGt[i]<>'' then frei:=false;
if not frei
then Uebernehmen
else message('--> Es gibt nichts zum Übernehmen <--');
END;
{Info} 17: Infoline;
{Save} 18: SaveListe;
{PRT:} 19: Drucken;
{ENDE} 20: BEGIN UniWin(227,48,26,5,18,5,32,10,23,10,'Ende','Zurück',
'APrint verlassen ???',1);
if ergebnis then ex:=true;
END;
{CLI} 21: ToCli;
{Loe} 23: Loeschen;
{NEU} 24: BEGIN UniWin(227,48,34,5,26,5,40,10,32,10,'Ja','Nein',
'Neu: Daten löschen ?',0);
if ergebnis then BEGIN neues:=true; Neu; END;END;
25: LadeListe;
26: Prefs;
else;end;
RAWKEY :
case cg of
$45,$12:
BEGIN UniWin(227,48,26,5,18,5,32,10,23,10,'Ende','Zurück',
'APrint verlassen ???',1);
if ergebnis then ex:=true;
END; {Ende: ESC/E}
$22: Drucken; {Drucken D}
$17: Infoline; {Info: I}
$25: ToCli; {Sleep: H}
$29: Loeschen; {Löschen: Ö}
$01..$0A: Addyout(cg-1); {AdrGads: 1..0}
$21: SaveListe; {Speichern: S}
$36: BEGIN UniWin(227,48,34,5,26,5,40,10,32,10,'Ja','Nein',
'Neu: Daten löschen ?',0);
if ergebnis then BEGIN neues:=true; Neu; END; END;
{Neu: N}
$19: Prefs; {Prefs: P}
$28: LadeListe; {laden: L}
$15:; {Z-->R: Z}
$11: Wechseln; {@: W}
$20: strw:=ActivateGadget(^SG[0],Win,Nil); {Name1: A}
$37: strw:=ActivateGadget(^SG[1],Win,Nil); {Name2: M}
$0b: strw:=ActivateGadget(^SG[2],Win,Nil); {Straße: ß}
$18: strw:=ActivateGadget(^SG[3],Win,Nil); {Ort: O}
$27: strw:=ActivateGadget(^SG[4],Win,Nil); {Kürzel: K}
$35: strw:=ActivateGadget(^SG[5],Win,Nil); {Abs.: B}
else;end;
otherwise
end;
END;
until ex=true;
Prc^.pr_WindowPtr:=OWin;
if asl then CloseLib(AslBase)
else if arp then CloseLib(ArpBase);
Close_Window(Win);
Close_Screen(Scr);
Free_Mem(LONG(iradio1),SizeOf(iradiofeld));
Free_Mem(LONG(iradio2),SizeOf(iradiofeld));
Free_Mem(LONG(ipfeil),SizeOf(ipffeld));
END.